<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>EnTech FPK: TankDriveSubsystem Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">EnTech FPK
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">FRC Programming Kit by the EnTech 281 GreenVillains</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-types">Protected Types</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="class_tank_drive_subsystem-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">TankDriveSubsystem Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="_tank_drive_subsystem_8hpp_source.html">TankDriveSubsystem.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for TankDriveSubsystem:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_tank_drive_subsystem.png" usemap="#TankDriveSubsystem_map" alt=""/>
  <map id="TankDriveSubsystem_map" name="TankDriveSubsystem_map">
<area href="class_drive_subsystem.html" alt="DriveSubsystem" shape="rect" coords="0,112,158,136"/>
<area href="class_robot_subsystem.html" alt="RobotSubsystem" shape="rect" coords="0,56,158,80"/>
<area href="class_subscriber.html" alt="Subscriber" shape="rect" coords="0,0,158,24"/>
<area href="class_mecanum_drive_subsystem.html" alt="MecanumDriveSubsystem" shape="rect" coords="0,224,158,248"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem_1_1_dead_zone_modifier.html">DeadZoneModifier</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem_1_1_reverse_modifier.html">ReverseModifier</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem_1_1_scale_modifier.html">ScaleModifier</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a15e7c39657349c6a8f1c5f168306d0e2"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><b>Side</b> { <b>Left</b> = 1, 
<b>Right</b> = 2
 }</td></tr>
<tr class="separator:a15e7c39657349c6a8f1c5f168306d0e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_class_drive_subsystem"><td colspan="2" onclick="javascript:toggleInherit('pub_types_class_drive_subsystem')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="class_drive_subsystem.html">DriveSubsystem</a></td></tr>
<tr class="memitem:adbbe91a7fd62cf12702601070d50b6eb inherit pub_types_class_drive_subsystem"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a> { <br/>
&#160;&#160;<b>ControlModePercentVBus</b> = PidMotorController::PercentVBus, 
<b>ControlModeSpeed</b> = PidMotorController::Speed, 
<b>ControlModeDistance</b> = PidMotorController::Position, 
<b>ControlModeVoltage</b> = PidMotorController::Voltage, 
<br/>
&#160;&#160;<b>ControlModeCurrent</b> = PidMotorController::Current
<br/>
 }</td></tr>
<tr class="separator:adbbe91a7fd62cf12702601070d50b6eb inherit pub_types_class_drive_subsystem"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bf21977a6b2911139200f2d2c32871a inherit pub_types_class_drive_subsystem"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_drive_subsystem.html#a8bf21977a6b2911139200f2d2c32871a">SpeedReference</a> { <b>SpeedReferenceNothing</b> = CANJaguar::kSpeedRef_None, 
<b>SpeedReferenceEncoder</b> = CANJaguar::kSpeedRef_Encoder, 
<b>SpeedReferenceInvertedEncoder</b> = CANJaguar::kSpeedRef_InvEncoder, 
<b>SpeedReferenceQuadEncoder</b> = CANJaguar::kSpeedRef_QuadEncoder
 }</td></tr>
<tr class="separator:a8bf21977a6b2911139200f2d2c32871a inherit pub_types_class_drive_subsystem"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4cb48ca262f5befda36fb53263843d7 inherit pub_types_class_drive_subsystem"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_drive_subsystem.html#ad4cb48ca262f5befda36fb53263843d7">DistanceReference</a> { <b>DistanceReferenceNothing</b> = CANJaguar::kPosRef_None, 
<b>DistanceReferenceQuadEncoder</b> = CANJaguar::kPosRef_QuadEncoder, 
<b>DistanceReferencePotentiometer</b> = CANJaguar::kPosRef_Potentiometer
 }</td></tr>
<tr class="separator:ad4cb48ca262f5befda36fb53263843d7 inherit pub_types_class_drive_subsystem"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace82b46d96fe6a96f39a564e303de261 inherit pub_types_class_drive_subsystem"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_drive_subsystem.html#ace82b46d96fe6a96f39a564e303de261">NeutralMode</a> { <b>NeutralModeJumper</b> = CANJaguar::kNeutralMode_Jumper, 
<b>NeutralModeBrake</b> = CANJaguar::kNeutralMode_Brake, 
<b>NeutralModeCoast</b> = CANJaguar::kNeutralMode_Coast
 }</td></tr>
<tr class="separator:ace82b46d96fe6a96f39a564e303de261 inherit pub_types_class_drive_subsystem"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7db0765d419412cfd3941da6456b1cd2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7db0765d419412cfd3941da6456b1cd2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>TankDriveSubsystem</b> (UINT32 leftFrontMotorChannel, UINT32 leftBackMotorChannel, UINT32 rightFrontMotorChannel, UINT32 rightBackMotorChannel)</td></tr>
<tr class="separator:a7db0765d419412cfd3941da6456b1cd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b6d5ba2bca1b2d218375fdf93e830e8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a5b6d5ba2bca1b2d218375fdf93e830e8">TankDriveSubsystem</a> (UINT32 leftMotorChannel, UINT32 rightMotorChannel)</td></tr>
<tr class="separator:a5b6d5ba2bca1b2d218375fdf93e830e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81b7920209221386d07f820d618ab530"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a81b7920209221386d07f820d618ab530">TankDriveSubsystem</a> (boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt; leftFrontMotor, boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt; leftBackMotor, boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt; rightFrontMotor, boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt; rightBackMotor)</td></tr>
<tr class="separator:a81b7920209221386d07f820d618ab530"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f732a270a4549fbf76bd34d5cf05844"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a0f732a270a4549fbf76bd34d5cf05844">TankDriveSubsystem</a> (boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt; leftMotor, boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt; rightMotor)</td></tr>
<tr class="separator:a0f732a270a4549fbf76bd34d5cf05844"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56aef73731d1e82d080f1b375795a56f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a56aef73731d1e82d080f1b375795a56f">TankDriveSubsystem</a> (<a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *leftFrontMotor, <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *leftBackMotor, <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *rightFrontMotor, <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *rightBackMotor, bool canDeleteMotors=false)</td></tr>
<tr class="separator:a56aef73731d1e82d080f1b375795a56f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb2775f62d564eeec0c54ae20d710ff7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#abb2775f62d564eeec0c54ae20d710ff7">TankDriveSubsystem</a> (<a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *leftMotor, <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *rightMotor, bool canDeleteMotors=false)</td></tr>
<tr class="separator:abb2775f62d564eeec0c54ae20d710ff7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ddd4cc09db581614f99bfc720dd2eb9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a0ddd4cc09db581614f99bfc720dd2eb9">TankDriveSubsystem</a> (<a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;leftFrontMotor, <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;leftBackMotor, <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;rightFrontMotor, <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;rightBackMotor)</td></tr>
<tr class="separator:a0ddd4cc09db581614f99bfc720dd2eb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bb3ac4ae73bfcb77bdacb31052b9d09"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a8bb3ac4ae73bfcb77bdacb31052b9d09">TankDriveSubsystem</a> (<a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;leftMotor, <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;rightMotor)</td></tr>
<tr class="separator:a8bb3ac4ae73bfcb77bdacb31052b9d09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a5ed0dc2d14b7d96e1c827c3a536eba"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a7a5ed0dc2d14b7d96e1c827c3a536eba">TankDriveSubsystem</a> (boost::shared_ptr&lt; CANJaguar &gt; leftFrontMotor, boost::shared_ptr&lt; CANJaguar &gt; leftBackMotor, boost::shared_ptr&lt; CANJaguar &gt; rightFrontMotor, boost::shared_ptr&lt; CANJaguar &gt; rightBackMotor)</td></tr>
<tr class="separator:a7a5ed0dc2d14b7d96e1c827c3a536eba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05a431f8f439f308e4676c14411c70cf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a05a431f8f439f308e4676c14411c70cf">TankDriveSubsystem</a> (boost::shared_ptr&lt; CANJaguar &gt; leftMotor, boost::shared_ptr&lt; CANJaguar &gt; rightMotor)</td></tr>
<tr class="separator:a05a431f8f439f308e4676c14411c70cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaed15564e6d60c0a4133770a5c1d098d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#aaed15564e6d60c0a4133770a5c1d098d">TankDriveSubsystem</a> (CANJaguar *leftFrontMotor, CANJaguar *leftBackMotor, CANJaguar *rightFrontMotor, CANJaguar *rightBackMotor, bool canDeleteMotors=false)</td></tr>
<tr class="separator:aaed15564e6d60c0a4133770a5c1d098d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01f7150cf6fd4cda290ff33f7bf166fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a01f7150cf6fd4cda290ff33f7bf166fc">TankDriveSubsystem</a> (CANJaguar *leftMotor, CANJaguar *rightMotor, bool canDeleteMotors=false)</td></tr>
<tr class="separator:a01f7150cf6fd4cda290ff33f7bf166fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8da4ddd63d560f180b6b9ce19dc9de0a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a8da4ddd63d560f180b6b9ce19dc9de0a">TankDriveSubsystem</a> (CANJaguar &amp;leftFrontMotor, CANJaguar &amp;leftBackMotor, CANJaguar &amp;rightFrontMotor, CANJaguar &amp;rightBackMotor)</td></tr>
<tr class="separator:a8da4ddd63d560f180b6b9ce19dc9de0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83ecf54aca8c30faa273c8a73988448c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a83ecf54aca8c30faa273c8a73988448c">TankDriveSubsystem</a> (CANJaguar &amp;leftMotor, CANJaguar &amp;rightMotor)</td></tr>
<tr class="separator:a83ecf54aca8c30faa273c8a73988448c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ee157d37267ce8b992f3adc18d4cade"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a8ee157d37267ce8b992f3adc18d4cade">TankDriveSubsystem</a> (SpeedController *leftFrontMotor, SpeedController *leftBackMotor, SpeedController *rightFrontMotor, SpeedController *rightBackMotor)</td></tr>
<tr class="separator:a8ee157d37267ce8b992f3adc18d4cade"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a899218d5e877cd66b0f9e5c31e97489f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a899218d5e877cd66b0f9e5c31e97489f">TankDriveSubsystem</a> (SpeedController *leftMotor, SpeedController *rightMotor)</td></tr>
<tr class="separator:a899218d5e877cd66b0f9e5c31e97489f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af44e553b72f8a2a01fda4e4d561f9a29"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#af44e553b72f8a2a01fda4e4d561f9a29">TankDriveSubsystem</a> (SpeedController &amp;leftFrontMotor, SpeedController &amp;leftBackMotor, SpeedController &amp;rightFrontMotor, SpeedController &amp;rightBackMotor)</td></tr>
<tr class="separator:af44e553b72f8a2a01fda4e4d561f9a29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61913b7960d71dc73e2887db34bb989f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a61913b7960d71dc73e2887db34bb989f">TankDriveSubsystem</a> (SpeedController &amp;leftMotor, SpeedController &amp;rightMotor)</td></tr>
<tr class="separator:a61913b7960d71dc73e2887db34bb989f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2031041d42501363b411ed3a5ac147d"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#ad2031041d42501363b411ed3a5ac147d">GetMotorRankCount</a> () const </td></tr>
<tr class="separator:ad2031041d42501363b411ed3a5ac147d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4a6c1ac368b96b68c9facc346f04591"><td class="memItemLeft" align="right" valign="top">UINT32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#ad4a6c1ac368b96b68c9facc346f04591">GetMotorCount</a> () const </td></tr>
<tr class="separator:ad4a6c1ac368b96b68c9facc346f04591"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fd73ce2cc0f6dbb18d1e3a37c34dfde"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a8fd73ce2cc0f6dbb18d1e3a37c34dfde">DriveByTank</a> (double leftValue, double rightValue)</td></tr>
<tr class="separator:a8fd73ce2cc0f6dbb18d1e3a37c34dfde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48329a9c1073f0a59190648b56404918"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a48329a9c1073f0a59190648b56404918">DriveByMagnitudeAndCurve</a> (double magnitude, double curve)</td></tr>
<tr class="separator:a48329a9c1073f0a59190648b56404918"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25726afb4e9ae5b469578be4c8caa0bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25726afb4e9ae5b469578be4c8caa0bf"></a>
boost::shared_ptr&lt; <a class="el" href="class_operation.html">Operation</a><br class="typebreak"/>
&lt; bool &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>DriveDistanceByTank</b> (<a class="el" href="struct_tank_value.html">TankValue</a> value, double threshold)</td></tr>
<tr class="separator:a25726afb4e9ae5b469578be4c8caa0bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad78c027a2db0d8c8d9f0841a039c386c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad78c027a2db0d8c8d9f0841a039c386c"></a>
boost::shared_ptr&lt; <a class="el" href="class_operation.html">Operation</a><br class="typebreak"/>
&lt; bool &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>DriveDistanceByTank</b> (<a class="el" href="struct_tank_value.html">TankValue</a> value)</td></tr>
<tr class="separator:ad78c027a2db0d8c8d9f0841a039c386c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad16802c72b67097953da676a521fcde2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad16802c72b67097953da676a521fcde2"></a>
boost::shared_ptr&lt; <a class="el" href="class_operation.html">Operation</a><br class="typebreak"/>
&lt; bool &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>DriveDistanceByTank</b> (double left, double right, double threshold)</td></tr>
<tr class="separator:ad16802c72b67097953da676a521fcde2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e7c0fe3d48337b3d618c1da80cf71cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e7c0fe3d48337b3d618c1da80cf71cf"></a>
boost::shared_ptr&lt; <a class="el" href="class_operation.html">Operation</a><br class="typebreak"/>
&lt; bool &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>DriveDistanceByTank</b> (double left, double right)</td></tr>
<tr class="separator:a4e7c0fe3d48337b3d618c1da80cf71cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a036170bbfff7c4c27fd6402bd55d3350"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a036170bbfff7c4c27fd6402bd55d3350">SetControlMode</a> (<a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a> controlMode)</td></tr>
<tr class="separator:a036170bbfff7c4c27fd6402bd55d3350"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a373a676d75a14362bc31fe3d4a17c8a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a373a676d75a14362bc31fe3d4a17c8a1">GetControlMode</a> ()</td></tr>
<tr class="separator:a373a676d75a14362bc31fe3d4a17c8a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f95f6808ce9d475176e67a5c89ce407"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f95f6808ce9d475176e67a5c89ce407"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetNeutralMode</b> (<a class="el" href="class_drive_subsystem.html#ace82b46d96fe6a96f39a564e303de261">NeutralMode</a> neutralMode)</td></tr>
<tr class="separator:a0f95f6808ce9d475176e67a5c89ce407"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2b671ced4e49909c19d13eaebf98b90"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#af2b671ced4e49909c19d13eaebf98b90">GetMotorInvertation</a> (<a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a> motorPosition) const </td></tr>
<tr class="separator:af2b671ced4e49909c19d13eaebf98b90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47d76a87016c06faa71a326c0c644ff5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a47d76a87016c06faa71a326c0c644ff5">SetMotorInvertations</a> (bool leftFrontIsInverted, bool leftBackIsInverted, bool rightFrontIsInverted, bool rightBackIsInverted)</td></tr>
<tr class="separator:a47d76a87016c06faa71a326c0c644ff5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac594f9e16f238b40d7d855f895d9bcae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#ac594f9e16f238b40d7d855f895d9bcae">SetMotorInvertations</a> (bool leftIsInverted, bool rightIsInverted)</td></tr>
<tr class="separator:ac594f9e16f238b40d7d855f895d9bcae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a371ce69e5f9260fc53f30f582e41d2cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a371ce69e5f9260fc53f30f582e41d2cf">SetMotorInvertation</a> (<a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a> motorPosition, bool isInverted)</td></tr>
<tr class="separator:a371ce69e5f9260fc53f30f582e41d2cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52ffae710dd29404babfba5456749fee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52ffae710dd29404babfba5456749fee"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetMotorInvertation</b> (Side side, UINT32 rank, bool isInverted)</td></tr>
<tr class="separator:a52ffae710dd29404babfba5456749fee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9dd8286531be9c8aebd74bf20effea5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#aa9dd8286531be9c8aebd74bf20effea5">SetEncodersCodesPerRevolution</a> (UINT16 codesPerRevolution)</td></tr>
<tr class="separator:aa9dd8286531be9c8aebd74bf20effea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4f06a60c711464a175f1d82a828b13b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#ab4f06a60c711464a175f1d82a828b13b">SetEncodersCodesPerRevolution</a> (UINT16 leftFrontCodesPerRevolution, UINT16 leftBackCodesPerRevolution, UINT16 rightFrontCodesPerRevolution, UINT16 rightBackCodesPerRevolution)</td></tr>
<tr class="separator:ab4f06a60c711464a175f1d82a828b13b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5148286a13682a83196a1b725361639e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a5148286a13682a83196a1b725361639e">SetEncoderCodesPerRevolution</a> (<a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a> motorPosition, UINT16 codesPerRevolution)</td></tr>
<tr class="separator:a5148286a13682a83196a1b725361639e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff629d559d7caa9b0d09e7297de4c7ca"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff629d559d7caa9b0d09e7297de4c7ca"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetEncoderCodesPerRevolution</b> (Side side, UINT32 rank, UINT16 codesPerRevolution)</td></tr>
<tr class="separator:aff629d559d7caa9b0d09e7297de4c7ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e963323135db309d6584387ad5387a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a0e963323135db309d6584387ad5387a8">SetPIDs</a> (<a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a> controlMode, double p, double i, double d)</td></tr>
<tr class="separator:a0e963323135db309d6584387ad5387a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade9984aff56419959bec12bcaca45de5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#ade9984aff56419959bec12bcaca45de5">SetPID</a> (<a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a> controlMode, <a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a> motorPosition, double p, double i, double d)</td></tr>
<tr class="separator:ade9984aff56419959bec12bcaca45de5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a025e857f24a83936ae0a5a65f5b4afde"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a025e857f24a83936ae0a5a65f5b4afde"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetMaximumSpeed</b> (double maximumSpeed)</td></tr>
<tr class="separator:a025e857f24a83936ae0a5a65f5b4afde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99eb3cb1032956d57cc5fd36879d9f1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99eb3cb1032956d57cc5fd36879d9f1b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetMaximumVoltage</b> (double maximumVoltage)</td></tr>
<tr class="separator:a99eb3cb1032956d57cc5fd36879d9f1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aefd514a3cab9e0a2754506230bc12aff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefd514a3cab9e0a2754506230bc12aff"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetMaximumCurrent</b> (double maximumCurrent)</td></tr>
<tr class="separator:aefd514a3cab9e0a2754506230bc12aff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1d533c0ce470526e410191e660aef19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa1d533c0ce470526e410191e660aef19"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>GetDistanceThreshold</b> ()</td></tr>
<tr class="separator:aa1d533c0ce470526e410191e660aef19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad705027e309a9ec03e3232de113701bb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad705027e309a9ec03e3232de113701bb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetDistanceThreshold</b> (double distanceThreshold)</td></tr>
<tr class="separator:ad705027e309a9ec03e3232de113701bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46e5755072a88745e4a48f553c8f9b92"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46e5755072a88745e4a48f553c8f9b92"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>GetExpiration</b> ()</td></tr>
<tr class="separator:a46e5755072a88745e4a48f553c8f9b92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dce816dfcf05c862990907655de550c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6dce816dfcf05c862990907655de550c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetExpiration</b> (double expiration)</td></tr>
<tr class="separator:a6dce816dfcf05c862990907655de550c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a94519a782cffefc8d72482c353508586"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct_tank_value.html">TankValue</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a94519a782cffefc8d72482c353508586">TankDriveFetchValue</a> (GenericHID &amp;leftJoystick, GenericHID &amp;rightJoystick)</td></tr>
<tr class="separator:a94519a782cffefc8d72482c353508586"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0c143fa1b7760d8c20d2a463edb9c47"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab0c143fa1b7760d8c20d2a463edb9c47"></a>
static <a class="el" href="struct_tank_value.html">TankValue</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ArcadeDriveFetchValue</b> (GenericHID &amp;joystick)</td></tr>
<tr class="separator:ab0c143fa1b7760d8c20d2a463edb9c47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa833b59ef3034aa55366d2187a5fc1f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa833b59ef3034aa55366d2187a5fc1f2"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>DriveByTank</b> (<a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> &amp;drive, const <a class="el" href="struct_tank_value.html">TankValue</a> &amp;value)</td></tr>
<tr class="separator:aa833b59ef3034aa55366d2187a5fc1f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
Protected Types</h2></td></tr>
<tr class="memitem:a3368f9a0421f48f0591f2966920ed053"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3368f9a0421f48f0591f2966920ed053"></a>
typedef std::map<br class="typebreak"/>
&lt; <a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a>, <br class="typebreak"/>
boost::shared_ptr<br class="typebreak"/>
&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt;<br class="typebreak"/>
 &gt;::iterator&#160;</td><td class="memItemRight" valign="bottom"><b>MotorIterator</b></td></tr>
<tr class="separator:a3368f9a0421f48f0591f2966920ed053"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ab834b550c5bc2aa5ea164201287a3ebf"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#ab834b550c5bc2aa5ea164201287a3ebf">HandlePeriodic</a> ()</td></tr>
<tr class="separator:ab834b550c5bc2aa5ea164201287a3ebf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae91788bb584fba841a4322e4ab533303"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#ae91788bb584fba841a4322e4ab533303">HandleAwake</a> ()</td></tr>
<tr class="separator:ae91788bb584fba841a4322e4ab533303"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55532e7537d8f4aa680499fd84483ab7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#a55532e7537d8f4aa680499fd84483ab7">HandleStop</a> ()</td></tr>
<tr class="separator:a55532e7537d8f4aa680499fd84483ab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae234f352cd4dd1b4f2c1f1fc47f1c3bf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_tank_drive_subsystem.html#ae234f352cd4dd1b4f2c1f1fc47f1c3bf">SetMaximumOutput</a> (double maximumOutput)</td></tr>
<tr class="separator:ae234f352cd4dd1b4f2c1f1fc47f1c3bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf9576e209afc2fc1042b9b170972e27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf9576e209afc2fc1042b9b170972e27"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>GetMotorInvertationMultiplier</b> (<a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a> position) const </td></tr>
<tr class="separator:aaf9576e209afc2fc1042b9b170972e27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeab931949359292f9b06476dab6f2ae0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeab931949359292f9b06476dab6f2ae0"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>GetMotorInvertationMultiplier</b> (Side side, UINT32 rank) const </td></tr>
<tr class="separator:aeab931949359292f9b06476dab6f2ae0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af293b2765949bae732c291d9917cba5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af293b2765949bae732c291d9917cba5d"></a>
<a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetPidMotorController</b> (<a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a> position)</td></tr>
<tr class="separator:af293b2765949bae732c291d9917cba5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f0c1eea6813be76bff850458e7a1030"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f0c1eea6813be76bff850458e7a1030"></a>
<a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetPidMotorController</b> (Side side, UINT32 rank)</td></tr>
<tr class="separator:a0f0c1eea6813be76bff850458e7a1030"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af77f54084d35a50e67a15f65e7f74844"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af77f54084d35a50e67a15f65e7f74844"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>FeedSafety</b> ()</td></tr>
<tr class="separator:af77f54084d35a50e67a15f65e7f74844"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr class="memitem:a680be1c1da58fac297d7807f417c8461"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a680be1c1da58fac297d7807f417c8461"></a>
static double&#160;</td><td class="memItemRight" valign="bottom"><b>GetMotorInvertationMultiplier</b> (bool isInverted)</td></tr>
<tr class="separator:a680be1c1da58fac297d7807f417c8461"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a1c86ec2ec6209aa01da16e0d445d716e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c86ec2ec6209aa01da16e0d445d716e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>m_reversed</b></td></tr>
<tr class="separator:a1c86ec2ec6209aa01da16e0d445d716e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a409a9c55cc725a66a18c474d8a7874fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a409a9c55cc725a66a18c474d8a7874fb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>m_ownsDrive</b></td></tr>
<tr class="separator:a409a9c55cc725a66a18c474d8a7874fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acce76ca08bbfaea81c0df9a616223d42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acce76ca08bbfaea81c0df9a616223d42"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>m_maxOutput</b></td></tr>
<tr class="separator:acce76ca08bbfaea81c0df9a616223d42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0098dbfb373a68b7932479b917ea0ef3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0098dbfb373a68b7932479b917ea0ef3"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>m_maxSpeed</b></td></tr>
<tr class="separator:a0098dbfb373a68b7932479b917ea0ef3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90ef71e1847b6f2293050967606d5485"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90ef71e1847b6f2293050967606d5485"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>m_maxVoltage</b></td></tr>
<tr class="separator:a90ef71e1847b6f2293050967606d5485"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83d35c0778ee8914406ef7320a90c2d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83d35c0778ee8914406ef7320a90c2d4"></a>
double&#160;</td><td class="memItemRight" valign="bottom"><b>m_maxCurrent</b></td></tr>
<tr class="separator:a83d35c0778ee8914406ef7320a90c2d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9edaa280dec6e8518e27342a642d075e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9edaa280dec6e8518e27342a642d075e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>m_usesPidEncoderMotors</b></td></tr>
<tr class="separator:a9edaa280dec6e8518e27342a642d075e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8508696c74382cfdb5f7924fde181038"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8508696c74382cfdb5f7924fde181038"></a>
<a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_controlMode</b></td></tr>
<tr class="separator:a8508696c74382cfdb5f7924fde181038"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e2accc1e0579c056f0cbcb2ce77e0a9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e2accc1e0579c056f0cbcb2ce77e0a9"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>m_counterPeriods</b></td></tr>
<tr class="separator:a0e2accc1e0579c056f0cbcb2ce77e0a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0679843421c5031ac329c5d003c89f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0679843421c5031ac329c5d003c89f3"></a>
MotorIterator&#160;</td><td class="memItemRight" valign="bottom"><b>m_motorCanidateForCheck</b></td></tr>
<tr class="separator:ae0679843421c5031ac329c5d003c89f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f92ae3b916b3dd0b307bc8a21253e28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f92ae3b916b3dd0b307bc8a21253e28"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>m_driveUpdated</b></td></tr>
<tr class="separator:a7f92ae3b916b3dd0b307bc8a21253e28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a1f89985772e91fec17e6a0e82d1c68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a1f89985772e91fec17e6a0e82d1c68"></a>
MotorSafetyHelper *&#160;</td><td class="memItemRight" valign="bottom"><b>m_safetyHelper</b></td></tr>
<tr class="separator:a2a1f89985772e91fec17e6a0e82d1c68"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:afd6dc1464219badacb2dabab8c98eb2a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd6dc1464219badacb2dabab8c98eb2a"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>MecanumDriveSubsystem</b></td></tr>
<tr class="separator:afd6dc1464219badacb2dabab8c98eb2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The FourMotorTankDriveSubsystem class is a base class for all four motor drive subsystems. </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a5b6d5ba2bca1b2d218375fdf93e830e8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>leftMotorChannel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT32&#160;</td>
          <td class="paramname"><em>rightMotorChannel</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two motors. </p>

</div>
</div>
<a class="anchor" id="a81b7920209221386d07f820d618ab530"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt;&#160;</td>
          <td class="paramname"><em>leftFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt;&#160;</td>
          <td class="paramname"><em>leftBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt;&#160;</td>
          <td class="paramname"><em>rightFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt;&#160;</td>
          <td class="paramname"><em>rightBackMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four PidEncoderMotorControllers. </p>

</div>
</div>
<a class="anchor" id="a0f732a270a4549fbf76bd34d5cf05844"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt;&#160;</td>
          <td class="paramname"><em>leftMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_ptr&lt; <a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &gt;&#160;</td>
          <td class="paramname"><em>rightMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two PidEncoderMotorControllers. </p>

</div>
</div>
<a class="anchor" id="a56aef73731d1e82d080f1b375795a56f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *&#160;</td>
          <td class="paramname"><em>leftFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *&#160;</td>
          <td class="paramname"><em>leftBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *&#160;</td>
          <td class="paramname"><em>rightFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *&#160;</td>
          <td class="paramname"><em>rightBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>canDeleteMotors</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four PidEncoderMotorControllers. </p>

</div>
</div>
<a class="anchor" id="abb2775f62d564eeec0c54ae20d710ff7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *&#160;</td>
          <td class="paramname"><em>leftMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> *&#160;</td>
          <td class="paramname"><em>rightMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>canDeleteMotors</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two PidEncoderMotorControllers. </p>

</div>
</div>
<a class="anchor" id="a0ddd4cc09db581614f99bfc720dd2eb9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;&#160;</td>
          <td class="paramname"><em>leftFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;&#160;</td>
          <td class="paramname"><em>leftBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;&#160;</td>
          <td class="paramname"><em>rightFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;&#160;</td>
          <td class="paramname"><em>rightBackMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four PidEncoderMotorControllers. </p>

</div>
</div>
<a class="anchor" id="a8bb3ac4ae73bfcb77bdacb31052b9d09"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;&#160;</td>
          <td class="paramname"><em>leftMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_pid_motor_controller.html">PidMotorController</a> &amp;&#160;</td>
          <td class="paramname"><em>rightMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two PidEncoderMotorControllers. </p>

</div>
</div>
<a class="anchor" id="a7a5ed0dc2d14b7d96e1c827c3a536eba"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; CANJaguar &gt;&#160;</td>
          <td class="paramname"><em>leftFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_ptr&lt; CANJaguar &gt;&#160;</td>
          <td class="paramname"><em>leftBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_ptr&lt; CANJaguar &gt;&#160;</td>
          <td class="paramname"><em>rightFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_ptr&lt; CANJaguar &gt;&#160;</td>
          <td class="paramname"><em>rightBackMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four CANJaguars. </p>

</div>
</div>
<a class="anchor" id="a05a431f8f439f308e4676c14411c70cf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">boost::shared_ptr&lt; CANJaguar &gt;&#160;</td>
          <td class="paramname"><em>leftMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">boost::shared_ptr&lt; CANJaguar &gt;&#160;</td>
          <td class="paramname"><em>rightMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two CANJaguars. </p>

</div>
</div>
<a class="anchor" id="aaed15564e6d60c0a4133770a5c1d098d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">CANJaguar *&#160;</td>
          <td class="paramname"><em>leftFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CANJaguar *&#160;</td>
          <td class="paramname"><em>leftBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CANJaguar *&#160;</td>
          <td class="paramname"><em>rightFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CANJaguar *&#160;</td>
          <td class="paramname"><em>rightBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>canDeleteMotors</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four CANJaguars. </p>

</div>
</div>
<a class="anchor" id="a01f7150cf6fd4cda290ff33f7bf166fc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">CANJaguar *&#160;</td>
          <td class="paramname"><em>leftMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CANJaguar *&#160;</td>
          <td class="paramname"><em>rightMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>canDeleteMotors</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two CANJaguars. </p>

</div>
</div>
<a class="anchor" id="a8da4ddd63d560f180b6b9ce19dc9de0a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">CANJaguar &amp;&#160;</td>
          <td class="paramname"><em>leftFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CANJaguar &amp;&#160;</td>
          <td class="paramname"><em>leftBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CANJaguar &amp;&#160;</td>
          <td class="paramname"><em>rightFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CANJaguar &amp;&#160;</td>
          <td class="paramname"><em>rightBackMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four CANJaguars. </p>

</div>
</div>
<a class="anchor" id="a83ecf54aca8c30faa273c8a73988448c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">CANJaguar &amp;&#160;</td>
          <td class="paramname"><em>leftMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CANJaguar &amp;&#160;</td>
          <td class="paramname"><em>rightMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two CANJaguars. </p>

</div>
</div>
<a class="anchor" id="a8ee157d37267ce8b992f3adc18d4cade"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">SpeedController *&#160;</td>
          <td class="paramname"><em>leftFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SpeedController *&#160;</td>
          <td class="paramname"><em>leftBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SpeedController *&#160;</td>
          <td class="paramname"><em>rightFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SpeedController *&#160;</td>
          <td class="paramname"><em>rightBackMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four SpeedControllers. </p>

</div>
</div>
<a class="anchor" id="a899218d5e877cd66b0f9e5c31e97489f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">SpeedController *&#160;</td>
          <td class="paramname"><em>leftMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SpeedController *&#160;</td>
          <td class="paramname"><em>rightMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two SpeedControllers. </p>

</div>
</div>
<a class="anchor" id="af44e553b72f8a2a01fda4e4d561f9a29"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">SpeedController &amp;&#160;</td>
          <td class="paramname"><em>leftFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SpeedController &amp;&#160;</td>
          <td class="paramname"><em>leftBackMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SpeedController &amp;&#160;</td>
          <td class="paramname"><em>rightFrontMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SpeedController &amp;&#160;</td>
          <td class="paramname"><em>rightBackMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four SpeedControllers. </p>

</div>
</div>
<a class="anchor" id="a61913b7960d71dc73e2887db34bb989f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">TankDriveSubsystem::TankDriveSubsystem </td>
          <td>(</td>
          <td class="paramtype">SpeedController &amp;&#160;</td>
          <td class="paramname"><em>leftMotor</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">SpeedController &amp;&#160;</td>
          <td class="paramname"><em>rightMotor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with two SpeedControllers. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a48329a9c1073f0a59190648b56404918"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::DriveByMagnitudeAndCurve </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>magnitude</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>curve</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Drive the specified magnitude and curve amount.</p>
<p>This function is untested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">magnitude</td><td>The magnitude to drive.  curve the amount to curve. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8fd73ce2cc0f6dbb18d1e3a37c34dfde"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::DriveByTank </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>leftValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>rightValue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Drive the specified amount tank style.</p>
<p>This function is untested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">leftValue</td><td>The amount to drive the left drive motors.  rightValue The amount to drive the right drive motors. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a373a676d75a14362bc31fe3d4a17c8a1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">DriveSubsystem::ControlMode</a> TankDriveSubsystem::GetControlMode </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Gets the current ControlMode.</p>
<p>This function is untested. </p>

</div>
</div>
<a class="anchor" id="ad4a6c1ac368b96b68c9facc346f04591"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 TankDriveSubsystem::GetMotorCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Gets the number of drive motors used. </p>

</div>
</div>
<a class="anchor" id="af2b671ced4e49909c19d13eaebf98b90"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool TankDriveSubsystem::GetMotorInvertation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">TankDriveSubsystem::MotorPosition</a>&#160;</td>
          <td class="paramname"><em>position</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the NeutralMode.</p>
<p>Currently only works if CANJaguars are used. If CANJaguars aren't being used, an exception will be thrown.</p>
<p>This function is untested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">neutralMode</td><td>The NeutralMode to switch to. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad2031041d42501363b411ed3a5ac147d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UINT32 TankDriveSubsystem::GetMotorRankCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Gets the number of drive motor ranks (or left motor/right motor pairs) used. </p>

</div>
</div>
<a class="anchor" id="ae91788bb584fba841a4322e4ab533303"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::HandleAwake </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This function should be overridden to handle the subsystem awakening (when Awake function is called). </p>

<p>Reimplemented from <a class="el" href="class_robot_subsystem.html#a5e7a5b4382c3c6e8c0ead39f8fbed87d">RobotSubsystem</a>.</p>

</div>
</div>
<a class="anchor" id="ab834b550c5bc2aa5ea164201287a3ebf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::HandlePeriodic </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This function should be overridden to handle periodic subsystem tasks. It will be called periodically when subsystem is added to robot. </p>

<p>Reimplemented from <a class="el" href="class_robot_subsystem.html#a7066b5d072b9ff707aabad9c46fcdc55">RobotSubsystem</a>.</p>

<p>Reimplemented in <a class="el" href="class_mecanum_drive_subsystem.html#adf2c3d907fc8271f70dee8eb3be2576f">MecanumDriveSubsystem</a>.</p>

</div>
</div>
<a class="anchor" id="a55532e7537d8f4aa680499fd84483ab7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::HandleStop </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This function must be overridden to disable this subsystem.</p>
<p>It must be implimented such that:</p>
<ul>
<li>All contained actuators will stop.</li>
<li>The subsystem can be stopped again even after it has been stopped.</li>
<li>Actuators will stay powerless until an Action function (a public function) has been called.</li>
<li>If the subsystem has already been stopped and an Action function has not been called, stopping the subsystem will not result in powered actuator activity. </li>
</ul>

<p>Implements <a class="el" href="class_robot_subsystem.html#a27e1d6644dbf38a6a056abafa08980e8">RobotSubsystem</a>.</p>

</div>
</div>
<a class="anchor" id="a036170bbfff7c4c27fd6402bd55d3350"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetControlMode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a>&#160;</td>
          <td class="paramname"><em>controlMode</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the ControlMode.</p>
<p>Except for PercentVBus, all other modes will only work if PidEncoderMotorControllers are used. An exception will be thrown if a mode other than PercentVBus is set without PidEncoderMotorControllers. The PidEncoderMotorControllers passed to this subsystem may not be able to support every mode usable by this function.</p>
<p>This function seems to work to the extent that it doesn't crash if used properly.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">controlMode</td><td>The ControlMode to switch to. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a5148286a13682a83196a1b725361639e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetEncoderCodesPerRevolution </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a>&#160;</td>
          <td class="paramname"><em>motorPosition</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT16&#160;</td>
          <td class="paramname"><em>codesPerRevolution</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the encoder codes per revolution on the specified motor.</p>
<p>This function seems to work.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">motorPosition</td><td>The specified <a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a> of the motor. </td></tr>
    <tr><td class="paramname">codesPerRevolution</td><td>The specified encoder codes per revolution of the specified motor. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa9dd8286531be9c8aebd74bf20effea5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetEncodersCodesPerRevolution </td>
          <td>(</td>
          <td class="paramtype">UINT16&#160;</td>
          <td class="paramname"><em>codePerRevolution</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the encoder codes per revolution.</p>
<p>This function is untested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">codePerRevolution</td><td>The specified encoder codes per revolution of all of the drive motors. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab4f06a60c711464a175f1d82a828b13b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetEncodersCodesPerRevolution </td>
          <td>(</td>
          <td class="paramtype">UINT16&#160;</td>
          <td class="paramname"><em>leftFrontCodesPerRevolution</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT16&#160;</td>
          <td class="paramname"><em>leftBackCodesPerRevolution</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT16&#160;</td>
          <td class="paramname"><em>rightFrontCodesPerRevolution</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">UINT16&#160;</td>
          <td class="paramname"><em>rightBackCodesPerRevolution</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the encoder codes per revolution on each of the motors.</p>
<p>This function is untested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">leftFrontCodesPerRevolution</td><td>The specified encoder codes per revolution of the left front motor. </td></tr>
    <tr><td class="paramname">leftBackCodesPerRevolution</td><td>The specified encoder codes per revolution of the left back motor. </td></tr>
    <tr><td class="paramname">rightFrontCodesPerRevolution</td><td>The specified encoder codes per revolution of the right front motor. </td></tr>
    <tr><td class="paramname">rightBackCodesPerRevolution</td><td>The specified encoder codes per revolution of the right back motor. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ae234f352cd4dd1b4f2c1f1fc47f1c3bf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetMaximumOutput </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>maximumOutput</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Sets the maximum output of the drive system.</p>
<p>This function seems to work.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">maximumOutput</td><td>The desired maximum output. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a371ce69e5f9260fc53f30f582e41d2cf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetMotorInvertation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a>&#160;</td>
          <td class="paramname"><em>motorPosition</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>isInverted</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the motor invertation of the motor at the specified <a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a>.</p>
<p>This function seems to work.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">motorPosition</td><td>The specified <a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a> of the motor to be inverted or uninverted. </td></tr>
    <tr><td class="paramname">isInverted</td><td>The desired invertation of the specified motor. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a47d76a87016c06faa71a326c0c644ff5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetMotorInvertations </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>leftFrontIsInverted</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>leftBackIsInverted</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>rightFrontIsInverted</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>rightBackIsInverted</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the motor invertations.</p>
<p>This function is untested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">leftFrontIsInverted</td><td>The desired invertation of the left front motor. </td></tr>
    <tr><td class="paramname">leftBackIsInverted</td><td>The desired invertation of the left back motor. </td></tr>
    <tr><td class="paramname">rightFrontIsInverted</td><td>The desired invertation of the right front motor. </td></tr>
    <tr><td class="paramname">rightBackIsInverted</td><td>The desired invertation of the right back motor. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac594f9e16f238b40d7d855f895d9bcae"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetMotorInvertations </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>leftIsInverted</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>rightIsInverted</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the motor invertations.</p>
<p>This function is untested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">leftIsInverted</td><td>The desired invertation of the left motors. </td></tr>
    <tr><td class="paramname">rightIsInverted</td><td>The desired invertation of the right motors. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ade9984aff56419959bec12bcaca45de5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetPID </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a>&#160;</td>
          <td class="paramname"><em>controlMode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a>&#160;</td>
          <td class="paramname"><em>motorPosition</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>i</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the PID values of the specified drive motor when in speed control mode.</p>
<p>This function is only supported when using PidEncoderMotorControllers. If PidEncoderMotorControllers aren't being used, an exception will be thrown.</p>
<p>This function seems to work.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">motorPosition</td><td>The specified <a class="el" href="struct_tank_drive_subsystem_1_1_motor_position.html">MotorPosition</a>. </td></tr>
    <tr><td class="paramname">p</td><td>The desired Proportional gain. </td></tr>
    <tr><td class="paramname">i</td><td>The desired Intregral gain. </td></tr>
    <tr><td class="paramname">d</td><td>The desired Differential gain. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0e963323135db309d6584387ad5387a8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void TankDriveSubsystem::SetPIDs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_drive_subsystem.html#adbbe91a7fd62cf12702601070d50b6eb">ControlMode</a>&#160;</td>
          <td class="paramname"><em>controlMode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>i</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the PID values of each of the motors when in speed control mode.</p>
<p>This function is only supported when using PidEncoderMotorControllers. If PidEncoderMotorControllers aren't being used, an exception will be thrown.</p>
<p>This function is untested.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>The desired Proportional gain. </td></tr>
    <tr><td class="paramname">i</td><td>The desired Intregral gain. </td></tr>
    <tr><td class="paramname">d</td><td>The desired Differential gain. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a94519a782cffefc8d72482c353508586"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="struct_tank_value.html">TankValue</a> TankDriveSubsystem::TankDriveFetchValue </td>
          <td>(</td>
          <td class="paramtype">GenericHID &amp;&#160;</td>
          <td class="paramname"><em>leftJoystick</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">GenericHID &amp;&#160;</td>
          <td class="paramname"><em>rightJoystick</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Constructs a <a class="el" href="class_tank_drive_subsystem.html">TankDriveSubsystem</a> with four motors. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>C:/Users/Sam/Projects/FRC/Libraries/Fpk/Entech-Fpk-Subscribers/Entech-Fpk/Subsystems/<a class="el" href="_tank_drive_subsystem_8hpp_source.html">TankDriveSubsystem.hpp</a></li>
<li>C:/Users/Sam/Projects/FRC/Libraries/Fpk/Entech-Fpk-Subscribers/Entech-Fpk/Subsystems/TankDriveSubsystem.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Aug 12 2013 16:46:51 for EnTech FPK by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.3.1
</small></address>
</body>
</html>
